﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//位运算例子
//int main() {
//	int mun = 10;
//	int m = mun << 1;
//printf("%d", m);
//	return 0;
//}
//int main() {
//	int mun = -1;
//	int m = mun>>1;
//	printf("%d", m);
//	return 0;
//}
//int main() {
//	int a = 1;
//	int m = ~a;
//	printf("%d", m);
//	return 0;
//}
// 
// 求1
//int main()
//{
//	int num = -1;
//	int i = 0;
//	int count = 0;//计数
//	for (i = 0; i < 32; i++)//int 有32个比特位 所以循环32次
//	{
//		if (num & (1 << i))//1每次往左移动一位与mun的每一位都进行与运算，为1则if为真
//			count++;
//	}
//	printf("⼆进制中1的个数 = %d\n", count);
//	return 0;
//}
// 野指针
//int main() {
//	int   arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	
//	printf("%d", &arr[9]-&arr[0]);
//	return 0;
//}
//int* u() {
//	int a = 10;
//	return &a;
//}
// 
// 逆向输出
//int main() {
//	int* r = u();
//	printf("hehe\n");
//	printf("yuyu\n");
//	printf("%d", *r);
//	return 0;
//}
//
#include<string.h>
//int main() {
//	char arr[128];
//	gets(arr);
//	int j=strlen(arr);
//	for (int i = j - 1; i >= 0; i--) {
//		printf("%c", arr[i]);
//	}
//	return 0;
//旋转数组-1
//void  shuai(char* p, int k,int j) {
//	for (int i = 0; i < j; i++) {
//		*(p + k +i) = *(p+i);
//	}
//	for (int t = 0; t <k; t++) {
//		*(p + t) = *(p + j + t);
//	}
//	for (int u = 0; u < k; u++) {
//		printf("%c ", *p);
//			p += 1;
//	}
//}
//int main() {
//	char arr[8] = "ABCD";
//	int j;
//	int k = strlen(arr);
//	scanf("%d", &j);
//	shuai(arr, k,j);
//	return 0;
//}
// -2
// void reverse_part(char *str, int start, int end) //将字符串从start到end这一段逆序
//{
//	int i, j;
//	char tmp;
//
//	for (i = start, j = end; i < j; i++, j--)
//	{
//		tmp = str[i];
//		str[i] = str[j];
//		str[j] = tmp;
//	}
//}
//
//void leftRound(char* src, int time)
//{
//	int len = strlen(src);
//	int pos = time % len;
//	reverse_part(src, 0, pos - 1); //逆序前段
//	reverse_part(src, pos, len - 1); //逆序后段
//	reverse_part(src, 0, len - 1); //整体逆序
//}
// -3
// void leftRound(char * src, int time)
//{
//	int len = strlen(src);
//	int pos = time % len; //断开位置的下标
//	char tmp[256] = { 0 }; //更准确的话可以选择malloc len + 1个字节的空间来做这个tmp
//
//	strcpy(tmp, src + pos); //先将后面的全部拷过来
//	strncat(tmp, src, pos); //然后将前面几个接上
//	strcpy(src, tmp); //最后拷回去
//}
// strle --实现
// 
// 
//int shuai(char* p) {
//	int n = 0;
//	while (*p != '\0') {
//
//		n++;
//		p++;
//	}
//	return n;
//}
//int main() {
//	char arr[] = "abcd";
//	int i = shuai(arr);
//	printf("%d", i);
//	return 0;
//}